cmake_minimum_required (VERSION 3.0)

project (TDMakerLiteQt CXX)
set (CMAKE_CXX_STANDARD 11)
set (CMAKE_POSITION_INDEPENDENT_CODE ON)

if ( NOT CMAKE_CXX11_STANDARD_COMPILE_OPTION )
	include(CheckCXXCompilerFlag)
	CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
	CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
	if(COMPILER_SUPPORTS_CXX11)
		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
	elseif(COMPILER_SUPPORTS_CXX0X)
		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
	else()
		message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
	endif()
endif( NOT CMAKE_CXX11_STANDARD_COMPILE_OPTION )


if ( NOT DEFINED QT_SELECT )
	message( STATUS "QT_SELECT is not defined, set QT_SELECT as 5")
	set(QT_SELECT 5)
endif ( NOT DEFINED QT_SELECT )

if(NOT INSTALL_DIR)
	set (INSTALL_DIR "/opt/package_name_you_prefer")
endif(NOT INSTALL_DIR)

configure_file(
	${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
	${CMAKE_CURRENT_BINARY_DIR}/config.h
)

file (GLOB UI_SOURCES "*.ui")

set (
	SOURCES
	TDMakerLiteMain.cpp
	${CMAKE_CURRENT_BINARY_DIR}/config.h
)

set (
	SOURCES_MOC
	${CMAKE_CURRENT_BINARY_DIR}/TDMakerLiteMain.moc
)


if(${QT_SELECT} EQUAL 4)
	# Qt 4
	message( STATUS "Qt 4 Code Generation for ${PROJECT_NAME}")
	# https://cmake.org/cmake/help/v3.0/module/FindQt4.html
	find_package(Qt4)
	message( STATUS "Qt4_FOUND: ${Qt4_FOUND} (${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH})")
	if ( ${Qt4_FOUND} )
		qt4_add_resources(QRC_CXX "TDMakerLite.qrc") # qrc_*.cxx
		qt4_wrap_ui(UI_HEADERS ${UI_SOURCES}) # ui_*.h
		qt4_generate_moc("TDMakerLiteMain.cpp" "TDMakerLiteMain.moc" TARGET TDMakerLiteQt)
		include_directories ("/usr/include/qt4")
		include_directories ("/usr/include/qt4/QtGui")
		include_directories (${CMAKE_CURRENT_BINARY_DIR})
	endif ( ${Qt4_FOUND} )
else(${QT_SELECT} EQUAL 4)
	# Qt 5
	message( STATUS "Qt 5 Code Generation for ${PROJECT_NAME}")
	# https://doc.qt.io/qt-5/cmake-manual.html
	find_package(Qt5Widgets)
	message( STATUS "Qt5Widgets_FOUND: ${Qt5Widgets_FOUND} (${Qt5Widgets_VERSION})")
	if ( ${Qt5Widgets_FOUND} )
		qt5_add_resources(QRC_CXX "TDMakerLite.qrc") # qrc_*.cxx
		qt5_wrap_ui(UI_HEADERS ${UI_SOURCES}) # ui_*.h
		qt5_generate_moc("TDMakerLiteMain.cpp" "TDMakerLiteMain.moc" TARGET TDMakerLiteQt)
		include_directories (${Qt5Widgets_INCLUDE_DIRS})
		include_directories ("/usr/include/x86_64-linux-gnu/qt5")
		include_directories ("/usr/include/x86_64-linux-gnu/qt5/QtWidgets")
		include_directories (${CMAKE_CURRENT_BINARY_DIR})
	endif ( ${Qt5Widgets_FOUND} )
endif(${QT_SELECT} EQUAL 4)


if ( "${Qt4_FOUND}" OR "${Qt5Widgets_FOUND}" )

	add_executable (TDMakerLiteQt ${UI_HEADERS} ${SOURCES} ${SOURCES_MOC} ${QRC_CXX} ${QM_FILES})
	set_target_properties(TDMakerLiteQt PROPERTIES OUTPUT_NAME TDMakerLite)

	target_compile_options(TDMakerLiteQt PUBLIC ${CMAKE_CXX11_STANDARD_COMPILE_OPTION})

	if(${QT_SELECT} EQUAL 4)
		target_link_libraries(TDMakerLiteQt dl pthread QtCore QtGui)
	else(${QT_SELECT} EQUAL 4)
		target_compile_options(TDMakerLiteQt PUBLIC -Wno-multichar -fPIC)
		target_link_libraries(TDMakerLiteQt dl pthread Qt5Core Qt5Gui Qt5Widgets)
	endif(${QT_SELECT} EQUAL 4)

	install (
		TARGETS TDMakerLiteQt
		DESTINATION ${INSTALL_DIR}/bin/
		PERMISSIONS
			OWNER_READ OWNER_WRITE OWNER_EXECUTE
			GROUP_READ             GROUP_EXECUTE
			WORLD_READ             WORLD_EXECUTE
	)

else ( "${Qt4_FOUND}" OR "${Qt5Widgets_FOUND}" )

	message( WARNING  "Neither Qt4 nor Qt5 does not found, skip building ${PROJECT_NAME}")

endif ( "${Qt4_FOUND}" OR "${Qt5Widgets_FOUND}" )

add_subdirectory(tr)
